1. Field of Use
The present invention relates to a multiprocessor system having distributed shared resources and dynamic and selective global data replication. It also refers to the related method for dynamic and selective allocation of global data.
2. Prior Art
Modern data processing systems may perform several processes at the same time and are referred to as multiprocessing systems.
While a program may be defined as a sequence of ordered instructions which perform on a set of data, a process may be briefly defined as "an address space, a thread of control which operates within that address space and the set of required system resources". The execution of a program requires the creation of one or more processes, that is the set up, in terms of addressable space and organization of the required resources and their operation.
The data needed for program execution and on which the program operates must also be loaded in the process space and a physical working memory space must necessarily correspond to the process space as a material support for the data.
In a multiprogramming system (or even simply in a multiprocessing system) the joint generation of a plurality of processes is implied. It may then happen that some of the data used in differing processes is of various times, the same for one or more processes. Such data is defined as "shared data".
The problem is therefore to avoid the repeated loading of the same data, when that data is used either simultaneously or subsequently in multiple processes, in an address space, and hence in a physical memory space, which differs for each process, and the need to replicate the same information for each process or to move it from one space to another, depending on the process.
To avoid this problem, the prior art has developed the concept of shared memory, such as is typical, for example, of the UNIX (Registered Trademark) operating system to store data which is used by two or more processes. The processes which operate on the shared data get the shared data from this shared memory.
In modern data processing systems and in order to obtain higher performance, a plurality of processors are used jointly, wherein each processor may jointly and simultaneously execute a plurality of processes. The processors are interconnected by a system bus, through which they communicate among themselves and with common shared resources, such as input/output units and working memories.
In such systems, local memories are used to overcome the performance limitations imposed by the system bus and to reduce the competition in the access to the system bus. A local memory is related to a processor and may be accessed by the related processor without need to obtain access to the system bus. Such local memories are preferably used to store "local data", that is, data used only by the related processor in the processes executed by the related processor.
As far as "shared data" is concerned, however, the multiprocessor architecture poses a problem in that it is clear that several processors may operate with a plurality of processes on the same shared data. Therefore, the concept has been introduced in multiprocessor systems of local data, shared or unshared, as data used in the processes performed in a single processor, and global data, that is, shared data which is used by processes executed in differing processors. The global data may be stored in a single shared memory, which may be accessed through the system bus, or in one or more local memories to which the unrelated processor may have access through the system bus, with the already indicated drawbacks.
To overcome, at least in part, this drawback, the concept of replicated global data has been recently proposed and described in European Patent Office Patent application EP-A-0320607, published Jun. 21, 1989 (U.S. Pat. No. 4,928,224).
According to this concept, global data is stored and replicated in each of the local memories of a multiprocessor system. In this way, each system processor may read the global data in its related local memory without having access to the system bus.
In the event of a write operation to be performed on global data, access to the system bus is required to write the data in all local memories, thus assuring its consistency everywhere. This drawback is largely balanced, however, by the resulting advantages.
A second drawback is that the local memories must be sized to store the global data. Each of them must therefore have a large capacity, adequate for storing all the global data which may be required for parallel execution of several processes. To keep the capacity of the local memories in economically acceptable limits, it is therefore necessary to keep the global data and related replication at a minimum.
With this aim, the Italian patent application N. 22593A/89 filed on Dec. 4, 1989 (U.S. Pat. No. 5,182,808) discloses the concept of dynamic managing of global data.
Global data, particularly that required in user processes (as opposed to global data used by the supervisor operating system) may be effectively used by many processors only in particular circumstances and only temporarily. For most of the time, and even if potentially shareable by many processes in a plurality of processors, the global data is used in only one processor.
Therefore the data is treated as local data and replicated and treated as global data only when many processors use the data.
The conversion from local data to global data, and vice versa, is performed dynamically at run time. In this way, and as long as the data is qualified as local, it is not necessary to allocate memory space in each and all of the local memories, nor for replication operations, so that system bus access operations are not required to provide consistency among the copies of the data.
It is desirable, with the aim of a more efficient use of the local memories, to further limit the replication of global data, performing it according to selective criteria and only in the local memories of the processors actually requiring the data.
This approach would require the development of complex and sophisticated replication mechanisms, which should permit control of write operations in selected local memories and verification that such operations have been performed.
It would therefore be necessary to develop interprocessor communication systems and procedures which would allow each processor to know if certain data is used by other processors, and by which of them, with such drawbacks that the practical embodiment would offer no advantage over the prior art.